using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace ControladorDifuso.Conjunto
{
    public class FabricaConjuntos
    {
        private ArrayList lista;
        public object [] Lista
        {
            get
            {
                string [] listaArray= new string [this.lista.Count];
                this.lista.CopyTo(listaArray);
                return listaArray;
            }
        }
        public FabricaConjuntos()
        {
            this.lista = new ArrayList();
            this.lista.Add("Conjunto Gaussiano");
            this.lista.Add("Conjunto Logistico");
            this.lista.Add("Conjunto Sigmoidal");
            this.lista.Add("Conjunto TangenteHiperbolica");
            this.lista.Add("Conjunto Trapezoidal");
            this.lista.Add("Conjunto TrapezoidalAscendente");
            this.lista.Add("Conjunto TrapezoidalDescendente");
            this.lista.Add("Conjunto Triangular");
            this.lista.Add("Conjunto Zetamoidal");
        }

        public ConjuntoDifuso FabricarConjunto(string tipo, string nombre, decimal alfa, decimal beta, decimal gama, decimal delta)
        {
            switch (tipo)
            {
                case "Conjunto Gaussiano":
                    return new ConjuntoGaussiano(nombre, alfa, beta);
                case "Conjunto Logistico":
                    return new ConjuntoLogistico(nombre, alfa);
                case "Conjunto Sigmoidal":
                    return new ConjuntoSigmoidal(nombre, alfa, beta);
                case "Conjunto TangenteHiperbolica":
                    return new ConjuntoTangenteHiperbolica(nombre, alfa, beta);
                case "Conjunto Trapezoidal":
                    return new ConjuntoTrapezoidal(nombre, alfa, beta, gama, delta);
                case "Conjunto TrapezoidalAscendente":
                    return new ConjuntoTrapezoidalAscendente(nombre, alfa, beta);
                case "Conjunto TrapezoidalDescendente":
                    return new ConjuntoTrapezoidalDescendente(nombre, alfa, beta);
                case "Conjunto Triangular":
                    return new ConjuntoTriangular(nombre, alfa, beta, gama);
                case "Conjunto Zetamoidal":
                    return new ConjuntoZetamoidal(nombre, alfa, beta);
            }
            return null;
        }

        
    }
}
